# -*- coding: utf-8 -*-

from pages.basePage import BaseHandler
import jinja2
import os
from models.usuario import Usuario
from models.persona import Persona
from models.mecanica import Mecanica

jinja_environment = jinja2.Environment(
    loader=jinja2.FileSystemLoader(os.path.dirname(__file__)))

class PersonaCoisada():
    nome = None
    descricao = None
    sexo = None
    idade = None
    monopolicromatico = None
    acaoreflexao = None
    coletivoindividual = None
    pid = None
    
class MecanicaCoisada:
    nome = None
    tipo = None
    descricao = None
    mid = None

class InfoPersona(BaseHandler):
    def get(self):
        userId = self.session.get('userid')        
        user = None
        if userId is not None:
            user = Usuario.get_by_id(userId)
        if user is None:
            self.redirect('/')
            return
        url = self.session.get('url')
        if url is None:
            self.redirect('/')
            return
        
        personaId = self.request.get('pid')
        persona = None
        if personaId:            
            persona = Persona.get_by_id(long(personaId))
            
        if persona is None:
            self.redirect('/')
            return
        
        vinc = self.request.get('vinc')
        mid = self.request.get('mid')
        
        if vinc is None:
            personaSessao = {'pid' : personaId, 'mecanicas' : []}
            if persona.mecanicas:
                for mecanica in persona.mecanicas:
                    personaSessao['mecanicas'].append(long(mecanica.key().id()))
        else:
            personaSessao = self.session.get('personaSessao')
            if personaSessao is None or personaSessao['pid'] != long(personaId):
                personaSessao = {'pid' : personaId, 'mecanicas' : []}
            if mid:
                personaSessao['mecanicas'].append(long(mid))
                
        self.session['personaSessao'] = personaSessao                
        
        mecanicasCoisadas = []
        personaCoisada = PersonaCoisada()
        if persona:
            personaCoisada.nome = persona.nome
            personaCoisada.descricao = persona.descricao
            personaCoisada.sexo = persona.sexo
            personaCoisada.idade = persona.idade
            personaCoisada.monopolicromatico = persona.monoPolicromatico
            personaCoisada.acaoreflexao = persona.acaoReflexao
            personaCoisada.coletivoindividual = persona.coletivoIndividual
            personaCoisada.pid = persona.key().id()
            
            mecanicas = None
            if persona:
                mecanicas = Mecanica.get(persona.mecanicas)
            
            # Carregando mecânicas já cadastradas na Persona
            if mecanicas:
                for mecanica in mecanicas:
                    mecanicaCoisada = MecanicaCoisada()
                    mecanicaCoisada.descricao = mecanica.descricao
                    mecanicaCoisada.nome = mecanica.nome
                    mecanicaCoisada.tipo = mecanica.tipo
                    mecanicaCoisada.mid = mecanica.key().id()
                    mecanicasCoisadas.append(mecanicaCoisada)

            # Carregando mecânicas da sessão
            for mecanica in personaSessao['mecanicas']:
                    mecanicaCoisada = MecanicaCoisada()
                    mecanicaCoisada.descricao = mecanica.descricao
                    mecanicaCoisada.nome = mecanica.nome
                    mecanicaCoisada.tipo = mecanica.tipo
                    mecanicaCoisada.mid = mecanica.key().id()
                    mecanicasCoisadas.append(mecanicaCoisada)
                
                    
            
        template_values = {
            'user' : user,
            'persona' : personaCoisada,
            'mecanicas' : mecanicasCoisadas,
            'url' : url
        }
            
        template = jinja_environment.get_template('html/infopersona.html')
        self.response.out.write(template.render(template_values))
        
    def post(self):
        userId = self.session.get('userid')        
        user = None
        if userId is not None:
            user = Usuario.get_by_id(userId)
        if user is None:
            self.redirect('/')
            return
        
        vinc = self.request.get('vinc')
        pid = self.request.get('pid')
        
        # Vinculando cartas de mecânica
        mids = self.session['personaSessao']['mecanicas']
        for mid in mids:
            mecanica = Mecanica.get_by_id(long(mid))
            if mecanica:
                if pid:
                    persona = Persona.get_by_id(long(pid))
                    if persona:
                        if persona.mecanicas:
                            persona.mecanicas.append(mecanica.key())
                        else:
                            persona.mecanicas = [mecanica.key()]
                            
        persona.put()
        
        self.session['personaSessao'] = None
        
        if vinc:
            self.redirect('/cenario?vinc=1&pid=' + pid)
        else:
            self.redirect('/inforPersona?pid=' + pid)